package com.shujia.wyh.day09;


/*
    问题：我们之前并没有在类中定义过构造方法，但是我们却一直在使用，用的是哪里的呢？

    注意：
        1、如果我们没有给出构造方法，JVM会自动给我们提供一个无参无方法体构造方法
        2、如果我们给出了构造方法，JVM就不会再提供默认的无参构造方法
            如果我们今后遇到了一个类中的构造方法可能不是无参的情况，怎么办？只能自己定义出来了。
            无论我们自己给出了带参数的构造方法或者无参构造方法，JVM永远都不会再提供默认的构造方法了
        3、重载（在同一个类中，方法名一致，参数列表不一致）,构造方法可以发生重载


    构造方法的作用：
        1、用来创建对象
        2、可以给对象中的成员变量进行赋予初始值

    给成员变量赋值的两种方式：
        1、使用setXxx()的形式给私有的成员变量赋值
        2、使用带参数的构造方法给私有的成员变量赋值

 */
class Constructor {
    private String name;
    private int age;

    Constructor(){
        System.out.println("这是我们自己写的无参构造方法");
    }

    Constructor(String name,int age){
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    //还需要额外提供一个方法，用来遍历输出所有的成员变量值
    //暂时就自定义一个
    public void show() {
        System.out.println("姓名：" + this.name);
        System.out.println("年龄：" + this.age);
    }

}

public class ConstructorDemo1 {
    public static void main(String[] args) {
        //创建一个对象
        Constructor c = new Constructor();
//        c.setName("小花");
//        c.setAge(18);
//        c.show();

        //使用带参数的构造方法创建对象
        Constructor c1 = new Constructor("小虎",18);
        c1.show();
    }
}
